package com.qiangzhi.mapper;

import com.github.pagehelper.Page;
import com.qiangzhi.annotation.AutoFill;
import com.qiangzhi.pojo.dto.UserPageQueryDTO;
import com.qiangzhi.enums.OperationType;
import com.qiangzhi.pojo.po.UserPO;
import com.qiangzhi.pojo.vo.UserVO;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface ManageMapper {

    /**
     * 新增教师和学生账号
     *
     * @param userPO
     */
    @AutoFill(value = OperationType.INSERT)
    void insertUser(UserPO userPO);

    /**
     * 新增教师和学生账号关联数据
     *
     * @param id
     * @param identify
     */
    void insertUserDetail(Long id, String identify);

    /**
     * 教师和学生分页查询
     *
     * @param userPageQueryDTO
     * @return
     */
    Page<UserVO> page(UserPageQueryDTO userPageQueryDTO);

    /**
     * 根据id查询教师和学生信息
     *
     * @param id
     * @param identify
     * @return
     */
    UserPO getById(Long id, String identify);

    /**
     * 根据id编辑教师和学生信息
     *
     * @param userPO
     * @return
     */
    @AutoFill(value = OperationType.UPDATE)
    void updateUser(UserPO userPO);

    /**
     * 根据id删除教师和学生信息
     *
     * @param id
     * @param identify
     * @return
     */
    void deleteById(Long id, String identify);

    /**
     * 删除教师和学生账号关联数据
     *
     * @param id
     * @param identify
     */
    void deleteDetailById(Long id, String identify);

    /**
     * 批量新增教师和学生账号
     *
     * @param userPOList
     * @return
     */
    @AutoFill(value = OperationType.INSERT_BATCH)
    void insertBatch(List<UserPO> userPOList, String identify);

    /**
     * 批量禁用教师和学生账号
     *
     * @param userPOList
     * @param identify
     */
    @AutoFill(value = OperationType.UPDATE_BATCH)
    void updateBatch(List<UserPO> userPOList, String identify);

}
